#include<vector>
using namespace std;
class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        int n = nums.size();
        if (n == 1)return 1;
        vector<int>f(n), g(n);
        f[0] = g[0] = 1;
        for (int i = 1; i < n; i++) {
            if (nums[i] > nums[i - 1]) {
                f[i] = g[i - 1] + 1;
                g[i] = g[i - 1];
            }
            else if (nums[i] < nums[i - 1]) {
                g[i] = f[i - 1] + 1;
                f[i] = f[i - 1];
            }
            else {
                g[i] = g[i - 1];
                f[i] = f[i - 1];
            }
        }
        return max(g[n - 1], f[n - 1]);
    }
};